<?php

class ClienteController extends Zend_Controller_Action
{

    public function init()
    {
        $this->initView();
        $this->view->baseUrl = $this->_request->getBaseUrl();
    }

    public function indexAction()
    {


        $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {
            //creo objeto que maneja la tabla album
            $table = new Application_Model_DbTable_Cliente();
            //obtengo listado de todas las filas de la tabla, y las
            //coloco en la variable datos de la pagina web (de la vista)
            //que vamos a mostrar

            $this->view->datos = $table->listar();
            //$this->view->saludo = "hola a todos!!";
        }
    }

    public function addAction()
    {
        $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {

           //titulo para la pagina
            $this->view->title = "Agregar Cliente";
            //valor para <head><title>
            $this->view->headTitle($this->view->title);
            //creo el formulario
            $form = new Application_Form_Cliente();
            //cambio el texto del boton submit
            $form->submit->setLabel('Guardar Clientes');

            //$form->reset->setLabel('Limpiar');
            //lo asigno oa la accion (la pag web que se mostrara)
            $this->view->form = $form;

            //titulo para la pagina
            $this->view->title = "Agregar Cliente";
            //valor para <head><title>
            $this->view->headTitle($this->view->title);
            //creo el formulario
            $form = new Application_Form_Cliente();
            //cambio el texto del boton submit
            $form->submit->setLabel('Guardar Clientes');
            //$form->reset->setLabel('Limpiar');
            //lo asigno oa la accion (la pag web que se mostrara)
            $this->view->form = $form;

            //los formularios envian sus datos a traves de POST
            //si vienen datos de post, es que el usuario ha enviado el formulario
            if ($this->getRequest()->isPost()) {
                //extrae un arreglo con los datos recibidos por POST
                //es decir, los datos clave=>valor del formulario
                $formData = $this->getRequest()->getPost();



            //los formularios envian sus datos a traves de POST
            //si vienen datos de post, es que el usuario ha enviado el formulario
            if ($this->getRequest()->isPost())
            {
                //extrae un arreglo con los datos recibidos por POST
                //es decir, los datos clave=>valor del formulario
                $formData = $this->getRequest()->getPost();

                //isValid() revisa todos los validadores y filtros que le
                //aplicamos a los objetos del formulario: se asegura de que los
                //campos requeridos se hallan llenado, que el formato de la fecha
                //sea el correcto, etc
                if ($form->isValid($formData)) {
                    //aca ya estamos seguros de que los datos son validos
                    //ahora los extraemos como se ve abajo
                    $cedula = $form->getValue('cedula');
                    $nombre = $form->getValue('nombre');
                    $apellido = $form->getValue('apellido');
                    $genero = $form->getValue('genero');
                    $telefono = $form->getValue('telefono');
                    $correo = $form->getValue('correo');

                //isValid() revisa todos los validadores y filtros que le
                //aplicamos a los objetos del formulario: se asegura de que los
                //campos requeridos se hallan llenado, que el formato de la fecha
                //sea el correcto, etc
                if ($form->isValid($formData))
                {
                    //aca ya estamos seguros de que los datos son validos
                    //ahora los extraemos como se ve abajo
                    $cedula = $form->getValue('cedula');
                    $nombre = $form->getValue('nombre');
                    $apellido = $form->getValue('apellido');
                    $genero = $form->getValue('genero');
                    $telefono = $form->getValue('telefono');
                    $correo = $form->getValue('correo');

                    //creo objeto Usuario que controla la tabla Usuario de la base de datos
                    $cliente = new Application_Model_DbTable_Cliente();
                    //llamo a la funcion agregar, con los datos que recibi del form
                    $cliente->agregar($cedula, $nombre, $apellido, $genero, $telefono, $correo);

                   
                    //indico que despues de haber agregado el album,
                    //me redirija a la accion index de AlbumController, es decir,
                    //a la pagina que me muestra el listado de albumes
                    $this->_helper->redirector('index');
                }
                //si los datos del formulario no son validos, es decir, falta ingresar
                //algunos o el formato es incorrecto...
                else
                {
                    //esta funcion vuelve a cargar el formulario con los datos que se
                    //enviaron, Y ADEMAS CON LOS MENSAJES DE ERROR, los que se le mostrarán
                    //al usuario
                    $form->populate($formData);
                }

                    //indico que despues de haber agregado el album,
                    //me redirija a la accion index de AlbumController, es decir,
                    //a la pagina que me muestra el listado de albumes
                    $this->_helper->redirector('index');
                }
                //si los datos del formulario no son validos, es decir, falta ingresar
                //algunos o el formato es incorrecto...
                else {
                    //esta funcion vuelve a cargar el formulario con los datos que se
                    //enviaron, Y ADEMAS CON LOS MENSAJES DE ERROR, los que se le mostrarán
                    //al usuario
                    $form->populate($formData);
                }

            }
        }
    }

    }
    
        public function deleteAction()
    {
        $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {
            //debe venir un parametro, por GET o POST, llamado id, con el id del cliente a borrar
            $id = $this->_getParam('id', 0);
            //creo objeto tabla Album
            $tabla = new Application_Model_DbTable_Cliente();
            //llamo a la funcion borrar
            $tabla->borrar($id);
            //redirijo a la accion index de este controlador, es decir,
            //al listado de clientes
            $this->_helper->redirector('index');
        }
    }




    public function updateAction()
    {
        $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {
            //titulo de la pagina
            $this->view->title = "Modificar Clientes";
            $this->view->headTitle($this->view->title);
            //creo el formulario
            $form = new Application_Form_Cliente ();
            //le pongo otro texto al boton submit
            $form->submit->setLabel('Guardar');
            $this->view->form = $form;


            //si el usuario envia datos del form
            if ($this->getRequest()->isPost()) {
                $formData = $this->getRequest()->getPost();
                //veo si son validos
                if ($form->isValid($formData)) {
                    //extraigo sus datos
                    $id = $form->getValue('id');
                    $cedula = $form->getValue('cedula');
                    $nombre = $form->getValue('nombre');
                    $apellido = $form->getValue('apellido');
                    $genero = $form->getValue('genero');
                    $telefono = $form->getValue('telefono');
                    $correo = $form->getValue('correo');

                    //creo objeto tabla Album()
                    $cliente = new Application_Model_DbTable_Cliente ();
                    //LLAMO A FUNCION CAMBIAR, QUE HACE EL UPDATE
                    $cliente->cambiar($id, $cedula, $nombre, $apellido, $genero, $telefono, $correo);
                    //redirijo a accion index
                    $this->_helper->redirector('index');
                }
                //si los datos no son validos, vuelvo a mostrar el form, con 
                //los mensajes de error
                else {
                    $form->populate($formData);
                }
            }
            //SI LOS DATOS NO VIENEN POR POST, ENTONCES ESTAMOS LLAMANDO A ESTA FUNCION
            //PARA QUE MUESTRE LOS DATOS DE UN CLIENTE
            else {
                //YO HE DECIDIDO QUE DEBE VENIR UN PARAMETRO LLAMADO ID, con el 
                //id del cliente que deseo editar
                //si viene un parametro llamado id le asigno su valor a $id; 
                //si no viene, le asigno cero
                //esto es como llamar a $_REQUEST
                //
            //$id = (int)$this->_request->getParam('Id', 0);
                $id = (int) $this->_getParam('id', 0);
                $this->view->saludo = "ID = " . $id;
                //si viene algun id
                if ($id > 0) {
                    //CREO FORM
                    $clientes = new Application_Model_DbTable_Cliente ();
                    //extraigo de la talba el album id= $id
                    $cliente = $clientes->get($id);
                    //populate() toma los datos de $cliente y los coloca en el formualrio.
                    //PARA QUE ESTO FUNCIONE, EL NOMBRE DE LOS OBJETOS DEL FORM DEBE
                    //SER IGUAL AL NOMBRE DE LOS CAMPOS EN LA TABLA!!

                    $form->populate($cliente);
                }
            }
        }
    }




//
//    public function saveDataAjaxxAction()
//    {   
//        //esta accion no usara layout.phtml
//        $this->_helper->layout->disableLayout();
//        //esta accion no renderizara su contenido en saludoajax2.phtml
//        $this->_helper->viewRenderer->setNoRender();
//
//        //esta es la respuesta a la llamada ajax 
//        $request = $this->getRequest()->getParams();
//        $info = $request['cabecera'];
////        print_r($info[0]['id']);
//        $cliente = new Application_Model_DbTable_Pagos();
//        //llamo a la funcion agregar, con los datos que recibi del form
//        $cliente->agregar($info[0]['fecha'], $info[0]['total']);
//        foreach ($request['cabecera'] as $address)
//        {
//        echo "items:". $address['fecha'] ."\n";
//        };
//        echo 'Se guardo la informacion correctamente';
//    }


}
